//
//  VistaBuscarProductoEnTodas.m
//  ProyectoMoviTiendas
//
//  Created by Daniel Paez on 3/8/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "VistaBuscarProductoEnTodas.h"
#import "Tienda.h"
#import "CategoriaProducto.h"
#import "SubcategoriaProducto.h"
#import "VistaItems.h"

@interface VistaBuscarProductoEnTodas ()
{
    //BOOL todas;
    BOOL yaEsta;
}

@end

@implementation VistaBuscarProductoEnTodas
@synthesize btnCancelar;
@synthesize barBusqueda;

@synthesize segControl, principal, selectedIndexes, resultados, lblNoFavoritas, items;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    principal = [MoviTiendas darInstancia];
    
    tiendas = principal.tiendas;
    favoritas = principal.cliente.favoritas;
    resultados = [[NSMutableArray alloc] initWithArray:tiendas];
    
    selectedIndexes = [[NSMutableArray alloc] init];
    items = [[NSMutableArray alloc] init];
    //BOOL todas = NO;
    yaEsta = false;
    
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
    
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)viewDidUnload
{
    barBusqueda = nil;
    [self setBarBusqueda:nil];
    btnCancelar = nil;
    [self setBtnCancelar:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
//Actualizar vista tan pronto se visualiza
-(void)viewWillAppear:(BOOL)animated
{
    [self.tableView reloadData];    
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

//Número de secciones en la tabla
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

//Número de filas en cada sección
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    int cuantas=0;
    
    //Está en Todas
    if(segControl.selectedSegmentIndex==0)
    {           
        resultados = [NSMutableArray arrayWithArray:tiendas];
        
        cuantas=[resultados count]/* + 1*/;
    }
    
    //Está en Favoritas
    else
    {
        resultados = [NSMutableArray arrayWithArray:favoritas];            
        
        //Tiene favoritas
        if([resultados count]!=0)
        {
            cuantas = [resultados count];
        }       
    }    
    return cuantas;
}

//Pinta las celdas
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    //Está en todas
    if(segControl.selectedSegmentIndex==0)
    {         
        [lblNoFavoritas setHidden:YES];
        
        //Primera fila se pinta diferente
        /*if ([indexPath row] == 0) 
         {            
         cell.textLabel.text = @"Buscar en todas las tiendas";
         }*/
        
        //El resto de filas se pintan igual
        //else 
        //{        
        Tienda * tienda = [resultados objectAtIndex:[indexPath row]/*-1*/];
        cell.textLabel.text = tienda.nombre;                
        //}            
    }
    
    //Está en Favoritas
    else
    {         
        //Si cliente no tiene favoritas es un caso contemplado en el método switchSegmentedControl
        
        //Cliente tiene favoritas
        if([resultados count]>0)
        {
            [lblNoFavoritas setHidden:YES];
            /*
             //Primera fila se pinta diferente
             if ([indexPath row] == 0) 
             {
             cell.textLabel.text = @"Buscar en todas las tiendas favoritas";
             }
             
             //El resto de filas se pintan igual
             else
             {*/
            
            Tienda * tienda = [resultados objectAtIndex:[indexPath row]];
            cell.textLabel.text = tienda.nombre;                                    
            //}
        }       
    }    
    return cell;
}

/*
 // Override to support conditional editing of the table view.
 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the specified item to be editable.
 return YES;
 }
 */

/*
 // Override to support editing the table view.
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 {
 if (editingStyle == UITableViewCellEditingStyleDelete) {
 // Delete the row from the data source
 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
 }   
 else if (editingStyle == UITableViewCellEditingStyleInsert) {
 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
 }   
 }
 */

/*
 // Override to support rearranging the table view.
 - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
 {
 }
 */

/*
 // Override to support conditional rearranging of the table view.
 - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the item to be re-orderable.
 return YES;
 }
 */

#pragma mark - Table view delegate

//Seleccionar celdas
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    
    //Si no ha escogido la tienda
    if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) 
    {
        [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
        
        //Le hace check a toda la lista
        
        //Si escogió la primera fila, se agregan todas las tiendas, si no se han agregado todas
        /*if ([indexPath row] == 0 && [selectedIndexes count]<[tiendas count]) 
         {
         todas=YES;
         [selectedIndexes removeAllObjects];
         [selectedIndexes addObjectsFromArray:tiendas];          
         }*/
        
        //Si escoge cualquier otra tienda
        //else
        //{
        //La añade, sólo si no escogió todas antes
        //if(todas==NO)
        //{
        Tienda *t = [tiendas objectAtIndex:indexPath.row/*-1*/];
        [selectedIndexes addObject:t];                
        //}          
        //}      
    } 
    
    //Si ya escogió la tienda
    else 
    {
        [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
        
        //Si escogió la primera fila, se remueven todas las tiendas
        //if ([indexPath row] == 0) 
        //{
        //    [selectedIndexes removeAllObjects];                       
        //}
        
        
        //Si escoge cualquier otra tienda
        //else
        //{
        //Si existen tiendas en la lista de escogidas
        //if([selectedIndexes count]>0)
        //{                
        Tienda *aBuscar = [resultados objectAtIndex:indexPath.row/*-1*/];
        
        for (int i=0; i< [selectedIndexes count]; i++)
        {
            Tienda *tienda = [selectedIndexes objectAtIndex:i];
            
            if([[tienda nombre] isEqualToString:[aBuscar nombre]])
            {
                [selectedIndexes removeObjectAtIndex:i];
            }             
        }         
        //}             
        //}
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    } 
    
    
    // [self performSegueWithIdentifier:@"prueba" sender:self]; 
    
    /*
     // Navigation logic may go here. Create and push another view controller.
     
     VistaDePrueba *detailViewController = [[VistaDePrueba alloc] initWithNibName:@"Prueba1" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     */ 
    /*
     Tienda * tienda = [principal.tiendas objectAtIndex:[indexPath row]];
     tiendaSeleccionada = tienda.nombre;
     
     [self.delgado seleccionoControlador:self seleccionoTienda:tiendaSeleccionada];*/
    
}

//Método para manejar el cambio en el segmented control (Todas y Favoritas)
- (IBAction)switchSegmentedControl:(id)sender 
{
    //Si dio click en Todas
    if(segControl.selectedSegmentIndex==0)
    {
        resultados = [NSMutableArray arrayWithArray:tiendas];
        [self.tableView reloadData];
    }
    
    //Si dio click en Favoritas
    else 
    {
        resultados = [NSMutableArray arrayWithArray:favoritas];
        [self.tableView reloadData];
        
        //Si no tiene favoritas
        if([resultados count]==0)
        {
            [lblNoFavoritas setHidden:NO];
            lblNoFavoritas.text=@"Usted no tiene ninguna tienda favorita";                              
        }        
    }   
}

//Método para esconder el teclado al presionar Cancelar
- (IBAction)esconderTeclado:(id)sender 
{
    [barBusqueda resignFirstResponder];    
}

//Método para realizar búsquedas de productos

-(void)buscarItems:(NSString *)searchText
{ 
    [items removeAllObjects];
    
    for (int i=0; i< [[principal darItemsDeTiendas:selectedIndexes] count]; i++)
    {
        Item *i1 = [[principal darItemsDeTiendas:selectedIndexes] objectAtIndex:i];
        
        NSRange r = [i1.producto.nombre rangeOfString:searchText options:NSCaseInsensitiveSearch];
        if(r.location != NSNotFound)
        {   
            //yaEsta= NO;
            
            /*for (int i=0; i<[items count] && !yaEsta; i++)
            {
                Item *i2 = [items objectAtIndex:i];
                if([i1.producto.nombre isEqualToString:i2.producto.nombre])
                {
                    yaEsta = YES;
                }
            }*/
            
            //if(!yaEsta)
            //{
                [items addObject:i1];                   
            //}            
        }
    }    
}

/*-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{     
    [self buscarProductos:barBusqueda.text];
    
    NSLog(@"%d",[selectedIndexes count]);
    [productos removeAllObjects];
    
    for (int i=0; i< [[principal darProductosDeTiendas:selectedIndexes] count]; i++)
    {
        Producto *p1 = [[principal darProductosDeTiendas:selectedIndexes] objectAtIndex:i];
        
        NSRange r = [p1.nombre rangeOfString:searchText options:NSCaseInsensitiveSearch];
        if(r.location != NSNotFound)
        {    yaEsta= NO;
            
             for (int i=0; i<[productos count] && !yaEsta; i++)
            {
                Producto *p2 = [productos objectAtIndex:i];
                if([p1.nombre isEqualToString:p2.nombre])
                {
                    yaEsta = YES;
                }
            }
            
            if(!yaEsta)
            {
                [productos addObject:p1];                   
            }            
        }
    }    
}*/


-(IBAction)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{    
    [self buscarItems:barBusqueda.text];
    [self performSegueWithIdentifier:@"buscarItems" sender:self];      
    
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{ 
    NSString * destino = segue.identifier; 
    
    if([destino isEqualToString:@"buscarItems"])
    {
        VistaItems * vista = [segue destinationViewController];
        vista.items = items;
        vista.tiendas = selectedIndexes;
      //  vista.title = [NSString stringWithFormat:@"%d", [items count]];;
    }    
}
@end
